Various animation production software products are known in the art. Generally, the known solutions are essentially stand-alone single-user solutions. Therefore, there has been no need for allowing efficient multi-user access to, for example, on-line animation production services.
U.S. Pat. No. 6,369,821 discloses a single-user method and system for synchronizing scripted animations. The system provides synchronization services to synchronize actions of two or more interactive user interface characters that are displayed simultaneously.
The prior art solutions fail to disclose e.g. a solution to the problem of managing concurrency of separately controllable temporal objects in a distributed multi-user system. For example, the numerous concurrency control methods known from e.g. the area of data management systems are not applicable to concurrency control of temporal data of e.g. a multi-user animation production system.
An object of the present invention is to provide a method and system for efficient concurrency control of temporal objects, e.g. spatiotemporal objects, e.g. animated graphical objects. Preferably, the temporal objects are user controllable.
Another possible object of the present invention is to improve data consistency of spatiotemporal objects.
Yet another possible object of the present invention is to enable a number of users to work on the same animation scene in an efficient and convenient manner. For example, the object may be the minimization of the adverse effects, e.g. interruptions, of one user's work to the work of other users concurrently working on the same scene.
Still yet another possible object is the improvement of performance of distributed animation production system.
Still yet another possible object of the present invention is to hide from the user controlling and/or developing an animated object the complexity of dealing with temporal data, especially in an animated scene comprising multiple, possibly dependent temporal objects.
The first aspect of the present invention is a method for granting access to data of a first object having at least one temporally access controlled public attribute and a clock capable of measuring time independently of the clocks of other objects. The method is characterized in that the method has steps of receiving a request to access value of the public attribute of the first object, comparing the value of the clock of the first object with the value of the clock of at least one second object, synchronizing, if necessary, the clock values of the first and the second objects, and granting access to the value of the attribute of the first object.
The temporally access controlled public attribute of the object may have a temporal value history, e.g. a plurality of values each corresponding to a time value of the clock of the object. The temporal value history may be maintained for a period of time. Such period of time is herein called change history time window. Such time window may specify e.g. how much the clocks of two objects may differ from each other in order to be synchronizable. The history values of a temporally access controlled attribute, that are too old to fit in the change history time window may be purged, i.e. removed from memory.
In an embodiment of the present invention, the first and the second objects reside in different memory address spaces, e.g. in a first and a second computer device. The first object and the second object may thus be controlled by different users. The computer devices, e.g. terminals, may communicate with each other via a data communication network, suitably through a server computer. In one embodiment, the first and the second computer devices may be directly connected via a data communication network, e.g. in a peer-to-peer fashion.
The clock of an object may be controllable e.g. by the user controlling the object. For example, when user wants to decelerate an animated object from the real-time speed of the object, the user may decelerate the clock of the object. An object may also have means for requesting another object to control, e.g. accelerate, slow, halt or start, its clock. An object may also have means to control its own clock, e.g. accelerate, slow, halt or start its clock.
The temporal attribute may have e.g. a value that changes as a function of elapsed time.
The temporal attribute of the object may also be a public attribute. The temporal attribute may have e.g. spatial information, e.g. location and/or movement information in a multidimensional space. The object may be e.g. an animated object.
The step of synchronization may include e.g. temporarily slowing or halting the clock of at least one second object.
The first object may be associated with at least one second object based on a dependency relationship, e.g. spatial dependency between the first object and the second object. The spatial dependency may be determined e.g. by spatial distance or structural dependence between the objects. The dependency between the first object and the second object may be also determined based on the value of at least one public attribute of the first object or the second object.
In an embodiment, the access request to the attribute data is for read access received from the second object, and the step of synchronizing the clock of the first object with the clock of the second object may include the step of temporarily decelerating or stopping the clock of the second object.
In an embodiment, the value to be returned to the second object may be selected from the temporal value history of the attribute of the first object. The selection may be performed e.g. on the basis of the time of the clock of the second object.
In an embodiment, the object may have a timestamp of last write operation to the data of the object. The synchronization of the clocks may not be necessary if the timestamp of the last write operation is earlier than the time of the clock of the second object.
In an embodiment, the access request to the attribute data is for write access, the method may include an additional step of determining at least one second object belonging to an area of influence of the first object, and the step of synchronizing the clock of the first object with the at least one second object comprises step of temporarily decelerating or stopping the clock of the second object.
In an embodiment, at least one, possibly a plurality of access requests may occur within a context, implemented e.g. as a context object, that may be e.g. automatically created or specified by the user. Generally, the context has a set of objects whose clocks are controlled by the context according to the requirements of the context while the context is active. For example, the objects may be temporarily required to synchronize their clocks. The access requests may be both read and write requests.
In an embodiment, the method may include additional steps of creating a context before the access request or as a part of processing the access request and releasing the context after the read and/or write operations within the context have been completed.
In an embodiment, a context may be automatically created upon a read access request. The context in this case may include e.g. the accessed object and the object requesting read access and the context controls that the clock of the accessed object is not behind the accessing object.
In an embodiment, a context may be automatically created upon a write access request. The context in this case may include e.g. the accessed object and the objects that are dependent from the accessed object and the context controls that the clock of the accessed object is not behind the dependent objects.
In an embodiment, a context may be created upon a “read for write” access request. The context in this case may have e.g. the at least one object to be accessed for read operation and the at least one object to be accessed for write operation. The context in this case may control that the clocks of those objects are in synch and possibly also proceeding at the same speed while the context is active.
The second aspect of the present invention is an arrangement for granting access to data of a first object residing in the memory address space a first computer device and the object has at least one temporally access controlled public attribute and a clock capable of measuring time independently of the clocks of other objects. The arrangement is characterized in that it has means for receiving a request to access value of the public attribute of the first object, comparing the value of the clock of the first object with the value of the clock of a second object residing in the memory address space of a second computer device, synchronizing, if necessary, the clock values of the first and the second objects, and granting access to the value of the attribute of the first object.
The arrangement may further have at least one server computer that is communicatively connectable to the first computer device and the second computer device. The server computer may be adapted to pass messages, e.g. clock synchronization requests and data read and write requests between the first and the second computer devices.
In an embodiment, there may be a plurality of server computers for spatial load distribution purposes.
The server computer may have means for maintaining and management of the objects of an animated space, determining dependencies between the objects of the animated space and providing a discovery service for finding objects belonging to an animated scene. The server computer may also have means for maintaining cache of data of the objects managed by the terminal computer devices of the arrangement. The cache may be e.g. a write-through cache. The server computer may also have means for managing the clocks of the objects managed by the terminal computer devices of the arrangement. For example, the server may temporarily stop a clock which has progressed too far ahead from the clocks of other objects. In this way, the server may manage the change history time window of an embodiment of the present invention.
The third aspect of the present invention is a computer software program executable on a computer device for granting access to data of a first object residing in the memory address space of the computer program, the first object has at least one temporally access controlled public attribute and a clock capable of measuring time independently of the clocks of other objects. The computer program is characterized in that it has computer executable instructions for receiving a request to access value of the public attribute of the first object, sending a request to a second computer program for comparing the value of the clock of the first object with the value of the clock of at least one second object residing in the memory address space of the second computer program, sending, if necessary, a request for synchronizing the clocks of the first and the second objects, and granting access to the value of the attribute of the first object.
Some embodiments of the invention are described herein, and further applications and adaptations of the present invention will be apparent to those of ordinary skill in the art.